

/// 创建这个自定义的 tabbar 的目的是  : 在系统 tabbar 的基础上 ,往中间 加入一个 加号 的图片
/// 因此. 需要对 原有的系统 tabbar 进行重新设置,  frame ! 以及一些 颜色等的 属性!
/// 首先 实现 初始化方法 
/// 然后再 layoutsubviews 方法中 ,实现子控件 设置

 ///  惊呆了 !  setValue(mainTabbar forKey : "tabBar") 就能够 把自定义 bar Button 添加到  tabBar 中!!!


import UIKit

class MainTabBar: UITabBar {
    
    // 重写 init 方法 :  决定 手码 , 还是 Xib
    override init(frame : CGRect){
        
        // 父类的这个 方法必须实现
        super.init(frame : frame)
        addSubview(addBtn)
    }
    
    
    // 这个方法貌似 也 必须 实现
    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
    
    override func layoutSubviews() {
        // 先要 实现 super 方法
        super.layoutSubviews()
        //let w = UIScreen.mainScreen().bounds.width / 5
        let w = self.bounds.width / 5
        let h = self.bounds.height
        let rect = CGRect(x : 0, y : 0, width: w,height: h)
        
        
        // 通过下面这个 for 循环来 实现 为 加号 腾出位置 !!!
        var index : CGFloat = 0
        for subview in subviews {
            
            if subview.isKindOfClass(NSClassFromString("UITabBarButton")!){
                // 设置 frame
                subview.frame = CGRectOffset(rect, index * w, 0)
                index += (index == 1 ? 2 :1)
                // 在这里 设置 tabbarbutton 的 颜色 不合理
                subview.tintColor = UIColor.orangeColor()
            }
        }
        
        addBtn.frame = CGRectOffset(rect, 2 * w, 0)
    }
    
    
    // 加号 按钮 的懒加载  格式 记住 !!!
    
    lazy var addBtn: UIButton =  {
        let btn = UIButton()
        btn.setImage(UIImage(named: "tabbar_compose_icon_add"), forState: .Normal)
        btn.setImage(UIImage(named: "tabbar_compose_icon_add_highlighted"), forState: .Highlighted)
        btn.setBackgroundImage(UIImage(named: "tabbar_compose_button"), forState: .Normal)
        btn.setBackgroundImage(UIImage(named: "tabbar_compose_button_highlighted"), forState: .Highlighted)
        //更具背景视图 自动设置大小
        btn.sizeToFit()
        return btn
    }()

}
